package com.dingtao.common.core.http;

import com.dingtao.common.VipBuy;
import com.dingtao.common.bean.Agree;
import com.dingtao.common.bean.AppVersion;
import com.dingtao.common.bean.Banner;
import com.dingtao.common.bean.BillRecord;
import com.dingtao.common.bean.BillRecordDetail;
import com.dingtao.common.bean.CheckInfo;
import com.dingtao.common.bean.Choose;
import com.dingtao.common.bean.Circle;
import com.dingtao.common.bean.DashData;
import com.dingtao.common.bean.Dynamic;
import com.dingtao.common.bean.DynamicTwo;
import com.dingtao.common.bean.GetComment;
import com.dingtao.common.bean.GetOrder;
import com.dingtao.common.bean.GetOrderDetail;
import com.dingtao.common.bean.HomeBannerCate;
import com.dingtao.common.bean.HomeCateTwo;
import com.dingtao.common.bean.ListResult;
import com.dingtao.common.bean.MessageCount;
import com.dingtao.common.bean.MyFollow;
import com.dingtao.common.bean.Order;
import com.dingtao.common.bean.OrderComment;
import com.dingtao.common.bean.OrderDetail;
import com.dingtao.common.bean.PaiDanDetail;
import com.dingtao.common.bean.PaiDanDetail2;
import com.dingtao.common.bean.PaiDanList;
import com.dingtao.common.bean.PaidanList2Result;
import com.dingtao.common.bean.PaidanList3;
import com.dingtao.common.bean.PaidanListResult;
import com.dingtao.common.bean.PaidanOrderDetail;
import com.dingtao.common.bean.PayBanlance;
import com.dingtao.common.bean.PayOrder;
import com.dingtao.common.bean.PayPower;
import com.dingtao.common.bean.RecommendMember;
import com.dingtao.common.bean.Result;
import com.dingtao.common.bean.SearchResult;
import com.dingtao.common.bean.Spread;
import com.dingtao.common.bean.Square;
import com.dingtao.common.bean.SquareComment;
import com.dingtao.common.bean.SquareDetail;
import com.dingtao.common.bean.SquareDetailTwo;
import com.dingtao.common.bean.SquareType;
import com.dingtao.common.bean.SubmitOrder;
import com.dingtao.common.bean.SystemMessage;
import com.dingtao.common.bean.TransInfo;
import com.dingtao.common.bean.TuiguangDetail;
import com.dingtao.common.bean.User;
import com.dingtao.common.bean.VipPageData;
import com.dingtao.common.bean.VisMe;
import com.dingtao.common.bean.Wallet;
import com.dingtao.common.bean.WxLogin;
import com.dingtao.common.bean.shop.HomeList;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * @author dingtao
 * @date 2018/12/28 10:00
 * qq:1940870847
 */
public interface IAppRequest {

    /**
     * 密码规则是数字加字母超过8位即可
     *
     * @return
     */
    @POST("user/v1/register")
    Observable<Result> register(@Body RequestBody json);

    /**
     * 密码规则是数字加字母超过8位即可
     *
     * @return
     */
//    @POST("user/v1/login")
//    Observable<Result<UserInfo>> login(@Body RequestBody json);

    /**
     * banner
     */
    @GET("commodity/v1/bannerShow")
    Observable<Result<List<Banner>>> bannerShow();

    /**
     * 首页商品列表
     */
    @GET("commodity/v1/commodityList")
    Observable<Result<HomeList>> commodityList();

    /**
     * 圈子
     */
    @GET("circle/v1/findCircleList")
    Observable<Result<List<Circle>>> findCircleList(
            @Header("userId") long userId,
            @Header("sessionId") String sessionId,
            @Query("page") int page,
            @Query("count") int count);

    /**
     * 圈子
     */
    @FormUrlEncoded
    @POST("user/findCircle/{uid}")
    Observable<Result<List<Circle>>> findCircle(
            @Path("uid") int uid,
            @Field("page") int page,
            @Field("count") int count);

    /**
     * 圈子点赞
     */
    @FormUrlEncoded
    @POST("circle/verify/v1/addCircleGreat")
    Observable<Result> addCircleGreat(
            @Header("userId") String userId,
            @Header("sessionId") String sessionId,
            @Field("circleId") long circleId);

    /**
     * 我的足迹
     */
    @GET("commodity/verify/v1/browseList")
    Observable<Result<List<Banner>>> browseList(
            @Header("userId") String userId,
            @Header("sessionId") String sessionId,
            @Query("page") int page,
            @Query("count") int count);

    /**
     * 同步购物车数据
     */
    @PUT("order/verify/v1/syncShoppingCart")
    Observable<Result> syncShoppingCart(
            @Header("userId") String userId,
            @Header("sessionId") String sessionId,
            @Body String data);

    /**
     * 发布圈子
     */
    @POST("circle/verify/v1/releaseCircle")
    Observable<Result> releaseCircle(@Header("userId") long userId,
                                     @Header("sessionId") String sessionId,
                                     @Body MultipartBody body);

    //==================================================

    /**
     * 首页banner和分类列表
     */
    @GET("/qw/app/index")
    Observable<Result<HomeCateTwo>> homeBannerCate();
//
//    /**
//     * 首页推荐列表
//     */
//    @POST("/qw/app/recommendOrderList")
//    Observable<Result<Order>> homeOrderList(@Query("pageNo") int pageNo,
//                                            @Query("pageSize") int pageSize);

    /**
     * 首页同城列表
     */
    @POST("/qw/app/orderList")
    Observable<Result<Order>> homeOrderList(@Query("pageNo") int pageNo,
                                            @Query("pageSize") int pageSize,
                                            @Query("categoryId") String categoryId,
                                            @Query("type") String type, @Query("cc") String cc, @Query("cn") String cn);

    /**
     * app首页订单数据列表(关注)
     */
    @POST("/qw/app/followOrderList")
    Observable<Result<Order>> followOrderList(@Query("mId") String mId, @Query("pageNo") int pageNo,
                                              @Query("pageSize") int pageSize, @Header("Authorization") String token);

    /**
     * 我发布的订单
     */
    @POST("/qw/app/order/memberPublishOrderList")
    Observable<Result<Order>> memberPublishOrderList(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                                     @Query("pageSize") int pageSize, @Query("status") int status);

    /**
     * 访问记录
     */
    @GET("/qw/app/member/me/history/list")
    Observable<Result<Order>> myVisvitHistory(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                              @Query("pageSize") int pageSize);
    /**
     * 访问记录
     */
    @POST("/qw/app/dispatch/chooseList")
    Observable<Result<ListResult<Choose>>> chooseList(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 谁看过我
     */
    @GET("/qw/app/member/me/visit/list")
    Observable<Result<VisMe>> seeMeHistory(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                           @Query("pageSize") int pageSize);

    /**
     * 查看会员订单
     */
    @POST("/qw/app/order/catMemberPublishOrderList")
    Observable<Result<Order>> catMemberPublishOrderList(@Query("id") String id, @Query("pageNo") int pageNo,
                                                        @Query("pageSize") int pageSize, @Header("Authorization") String token);

    /**
     * 删除我发布的订单
     */
    @POST("/qw/app/order/delPo")
    Observable<Result<Order>> delateBill(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 账单详情
     */
    @POST("/qw/app/recharge/log/details")
    Observable<Result<BillRecordDetail>> billRecordDetail(@Header("Authorization") String token, @Query("logId") String logId);

    /**
     * 筛选页列表
     */
    @POST("/qw/app/orderList")
    Observable<Result<Order>> cateOrderList(@Query("pageNo") int pageNo,
                                            @Query("pageSize") int pageSize,
                                            @Query("categoryId") String categoryId,
                                            @Query("type") String type,
                                            @Query("age") int age,
                                            @Query("auto") String auto,
                                            @Query("cc") String cc,
                                            @Query("cn") String cn,
                                            @Query("gender") String gender,
                                            @Query("price") String price);

    /**
     * 获取验证码
     */
    @POST("/qw/auth/app_login/sendCode")
    Observable<Result<String>> getSms(@Query("mobile") String mobile);

    /**
     * 验证码登录
     */
    @POST("/qw/auth/app_login/vcode")
    Observable<Result<String>> login(@Query("code") String code,
                                     @Query("mobile") String mobile,
                                     @Query("parentId") String parentId);

    /**
     * 密码登录
     */
    @POST("/qw/auth/app_login/pwd")
    Observable<Result<String>> loginPassword(@Query("acc") String acc,
                                             @Query("pwd") String pwd);

    /**
     * 微信登录
     */
    @POST("/qw/auth/app/login")
    Observable<Result<WxLogin>> loginWx(@Query("type") String type,
                                        @Query("code") String code);

    /**
     * 微信登录
     */
    @POST("/qw/app/dispatch/chooseService")
    Observable<Result<PayOrder>> chooseService(@Header("Authorization") String token,
                                              @Query("applyId") String applyId,
                                        @Query("id") String id,
                                        @Query("payType") String payType);

    /**
     * 用户信息
     */
    @GET("/qw/auth/getMemberBaseInfo")
    Observable<Result<User>> getUserInfo(@Header("Authorization") String token);

    /**
     * 用户信息
     */
    @POST("/qw/app/order/await/count")
    Observable<Result<MessageCount>> getMessageCount(@Header("Authorization") String token);

    /**
     * 用户信息
     */
    @POST("/qw/app/dispatch/cancel")
    Observable<Result> paidanCancel(@Header("Authorization") String token,@Query("id") String id);

    /**
     * 查看其他用户信息
     */
    @GET("/qw/app/member/baseInfo")
    Observable<Result<User>> getOtherUserInfo(@Query("targetMember") String targetMember, @Query("currentMember") String currentMember);


    /**
     * 个人主页数据统计展示
     */
    @POST("/qw/app/member/dashboardData")
    Observable<Result<DashData>> dashboardData(@Header("Authorization") String token, @Query("mId") long mId);

    /**
     * 会员动态列表
     */
    @POST("/qw/app/dynamic/list")
    Observable<Result<Dynamic>> dynamicList(@Query("status") String status, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("type") String type, @Header("Authorization") String token);

    /**
     * 关注
     */
    @POST("/qw/app/member/follow")
    Observable<Result<String>> follow_User(@Header("Authorization") String token, @Query("obj") String obj, @Query("type") String type);

    /**
     * 查看其他会员动态列表
     */
    @POST("/qw/app/dynamic/member/list")
    Observable<Result<Dynamic>> myDynamicList(@Query("id") String id, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Header("Authorization") String token);

    /**
     * 账单列表
     */
    @POST("/qw/app/recharge/log")
    Observable<Result<BillRecord>> checkBillRecord(@Header("Authorization") String token, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize);

    /**
     * 关注
     */
    @POST("/qw/app/dynamic/commentList")
    Observable<Result<GetComment>> getCommentList(@Header("Authorization") String token, @Query("dynamicId") String dynamicId, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize);

    /**
     * 关注
     */
    @POST("/qw/app/dispatch/consumerOrderList")
    Observable<Result<PaidanListResult>> consumerOrderList(@Header("Authorization") String token, @Query("type") String type, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize);

    /**
     * 关注
     */
    @POST("/qw/app/dispatch/serviceOrderList")
    Observable<Result<PaidanList2Result>> serviceOrderList(@Header("Authorization") String token, @Query("type") String type, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize);


    /**
     * 点赞
     */
    @POST("/qw/app/dynamic/follow")
    Observable<Result<String>> giveUp(@Header("Authorization") String token, @Query("dynamicId") String dynamicId);
    /**
     * 点赞
     */
    @POST("/qw/app/dispatch/apply/cancel")
    Observable<Result<String>> paidanApplyCancel(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 关注
     */
    @POST("/qw/app/dynamic/cancel")
    Observable<Result<String>> cancelFollow(@Header("Authorization") String token, @Query("dynamicId") String dynamicId);

    /**
     * 关注
     */
    @POST("/qw/app/dispatch/compute/price")
    Observable<Result<String>> computePrice(@Header("Authorization") String token, @Query("price") String price);

    /**
     * 发布动态
     */
    @POST("/qw/app/dynamic/publish")
    Observable<Result<String>> sendPublish(@Header("Authorization") String token, @Query("title") String title, @Query("files") String files, @Query("mId") String mId, @Query("topic") String topic);

    /**
     * 上传图片
     */
    @Multipart
    @POST("/qw/common/upload/img")
    Observable<Result<String>> uploadImg(@Part MultipartBody.Part file, @Query("type") String type, @Header("Authorization") String token);

    /**
     * 订单详情
     */
    @POST("/qw/app/publishOrderDetail")
    Observable<Result<OrderDetail>> getOrderDetail(@Query("publishOrderId") String publishOrderId, @Header("Authorization") String token);

    /**
     * 派单详情
     */
    @POST("/qw/app/dispatch/detail")
    Observable<Result<PaiDanDetail>> getPaidanDetail(@Query("id") String id, @Header("Authorization") String token);

    /**
     * 确认订单
     */
    @POST("/qw/app/order/buyIt")
    Observable<Result<SubmitOrder>> sureOrder(@Header("Authorization") String token,@Query("publishOrderId") String publishOrderId);

    /**
     * 接单
     */
    @POST("/qw/app/order/changeOrderStatus")
    Observable<Result<String>> changeOrderStatus(@Header("Authorization") String token, @Query("orderId") String orderId);

    /**
     * 接单
     */
    @POST("/qw/app/order/confirm")
    Observable<Result<String>> confirmOrder(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 接单
     */
    @POST("/qw/app/dispatch/confirm")
    Observable<Result<String>> dispatchConfirm(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 搜索会员
     */
    @POST("/qw/app/sm")
    Observable<SearchResult> search(@Query("kw") String kw, @Query("mId") String mId);

    /**
     * 编辑信息
     */
    @POST("/qw/app/member/editProfile")
    Observable<Result<String>> editUserInfo(@Header("Authorization") String token, @Query("mId") Long mId, @Query("area") String area, @Query("birthday") String birthday,
                                            @Query("gender") Integer gender, @Query("height") Integer height, @Query("imgUrl") String imgUrl, @Query("job") String job, @Query("nickName") String nickName, @Query("sign") String sign);

    /**
     * 会员身份证认证
     */
    @POST("/qw/app/member/identityChecked")
    Observable<Result<String>> identityChecked(@Header("Authorization") String token, @Query("area") String area, @Query("birthday") String birthday,
                                               @Query("gender") int gender, @Query("idCode") String idCode, @Query("mId") String mId, @Query("name") String name, @Query("urls") String urls);

    /**
     * 支付
     */
    @POST("/qw/app/order/payOrder")
    Observable<Result<PayOrder>> payOrder(@Header("Authorization") String token, @Query("amount") int amount, @Query("beginTime") String beginTime,
                                          @Query("consumeOrderId") String consumeOrderId, @Query("payType") String payType, @Query("coupon") String coupon);


    /**
     * 设置登录密码
     */
    @POST("/qw/app/member/spwd")
    Observable<Result<String>> setLoginPsw(@Header("Authorization") String token, @Query("id") String id, @Query("pwd") String pwd,
                                           @Query("vc") String vc);

    /**
     * 修改登录密码
     */
    @POST("/qw/app/member/upwd")
    Observable<Result<String>> changeLoginPsw(@Header("Authorization") String token, @Query("id") String id, @Query("npwd") String npwd,
                                              @Query("opwd") String opwd);

//    /**
//     * 支付
//     */
//    @POST("/qw/app/payment/consume/balance")
//    Observable<Result<String>> pay(@Header("Authorization") String token, @Query("orderId") String orderId, @Query("preId") String preId,
//                                          @Query("type") String type, @Query("payKey") String payKey,@Body PayOrder order);

    /**
     * 支付
     */
    @POST("/qw/app/payment/consume/balance")
    Observable<Result<String>> pay(@Header("Authorization") String token, @Body PayBanlance order);

    /**
     * 钱包
     */
    @POST("/qw/app/member/purse")
    Observable<Result<Wallet>> myWallet(@Header("Authorization") String token, @Query("mId") long mId);

    /**
     * 绑定支付宝ID
     */
    @POST("/qw/app/member/bdzfb")
    Observable<Result<String>> bindAliPay(@Header("Authorization") String token, @Query("code") String code);

    /**
     * 我接的单
     */
    @POST("/qw/app/order/memberConsumeOrderList")
    Observable<Result<GetOrder>> getOrder(@Header("Authorization") String token, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("status") int status);

    /**
     * 我接的单
     */
    @GET("/qw/app/system/msg/list")
    Observable<Result<SystemMessage>> systemMessage(@Header("Authorization") String token, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("type") int type);

    /**
     * 我发的单
     */
    @POST("/qw/app/order/memberServiceOrderList")
    Observable<Result<GetOrder>> sendOrder(@Header("Authorization") String token, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("status") int status);

    /**
     * 会员发单
     */
    @POST("/qw/app/order/publish")
    Observable<Result<GetOrder>> submitOrder(@Header("Authorization") String token, @Query("categoryId") int categoryId, @Query("cityCode") String cityCode, @Query("cityName") String cityName,
                                             @Query("genderLimit") String genderLimit, @Query("imgs") String imgs, @Query("lat") double lat, @Query("lng") double lng, @Query("otherDesc") String otherDesc,
                                             @Query("price") double price, @Query("timeLimit") String timeLimit, @Query("unit") int unit);

    /**
     * 编辑订单信息
     */
    @POST("/qw/app/order/editPublishOrder")
    Observable<Result<String>> editOrder(@Header("Authorization") String token, @Query("publishOrderId") String publishOrderId,
                                         @Query("ageLimit") String ageLimit, @Query("genderLimit") String genderLimit, @Query("url") String url, @Query("otherDesc") String otherDesc,
                                         @Query("price") String price, @Query("timeLimit") String timeLimit, @Query("unit") String unit);


    /**
     * 获取聊天usersig
     */
    @POST("/qw/app/im/userSig")
    Observable<Result<String>> getUserSig(@Header("Authorization") String token);
    /**
     * 获取聊天usersig
     */
    @POST("/qw/auth/app/refresh_token")
    Observable<Result<String>> refreshToken(@Query("token") String token);

    /**
     * 获取消费订单详情
     */
    @POST("/qw/app/order/consumeOrderDetails")
    Observable<Result<GetOrderDetail>> getUOrderDetail(@Header("Authorization") String token, @Query("orderId") String orderId, @Query("type") String type);

    /**
     * 取消订单
     */
    @POST("/qw/app/order/cancel")
    Observable<Result<String>> cancelOrder(@Header("Authorization") String token, @Query("id") String id, @Query("reason") String reason);

    /**
     * 取消订单
     */
    @POST("/qw/app/member/ask")
    Observable<Result<String>> feedback(@Header("Authorization") String token, @Query("content") String content, @Query("img") String img);

    /**
     * 设置支付密码
     */
    @POST("/qw/app/member/setppwd")
    Observable<Result<String>> setPayPsw(@Header("Authorization") String token, @Query("ppwd") String ppwd, @Query("vc") String vc);

    /**
     * 修改支付密码
     */
    @POST("/qw/app/member/cppwd")
    Observable<Result<String>> changePayPsw(@Header("Authorization") String token, @Query("nppwd") String nppwd, @Query("oppwd") String oppwd);

    /**
     * 更换手机号
     */
    @POST("/qw/app/member/bindPhone")
    Observable<Result<String>> bindPhone(@Header("Authorization") String token, @Query("code") String code, @Query("mobile") String mobile);

    /**
     * 获取签到信息
     */
    @POST("/qw/app/activity/dd/date")
    Observable<Result<CheckInfo>> getCheckInfo(@Header("Authorization") String token);

    /**
     * 签到
     */
    @POST("/qw/app/activity/dd/signIn")
    Observable<Result<String>> checkIn(@Header("Authorization") String token);

    /**
     * 评论
     */
    @POST("/qw/app/order/commentOrder")
    Observable<Result<String>> submitEvaluate(@Header("Authorization") String token, @Query("commentContent") String commentContent, @Query("orderId") String orderId, @Query("type") String type);

    /**
     * 会员余额提现信息
     */
    @POST("/qw/app/member/trans/info")
    Observable<Result<TransInfo>> getTransInfo(@Header("Authorization") String token, @Query("amount") String amount);

    /**
     * 提现
     */
    @POST("/qw/app/member/trans")
    Observable<Result<String>> submitTrans(@Header("Authorization") String token, @Query("amount") String amount, @Query("type") String type, @Query("payKey") String payKey);

    @POST("/qw/app/dynamic/commentDynamic")
    Observable<Result<String>> dynamic_Comment(@Header("Authorization") String token, @Query("message") String message, @Query("dynamicId") String dynamicId);

    @POST("/qw/app/dynamic/cfollow")
    Observable<Result<String>> commentFollow(@Header("Authorization") String token, @Query("id") String id, @Query("status") int status);

    @GET("/qw/app/agree")
    Observable<Result<Agree>> agree();

    @POST("/qw/app/member/seeForStatus")
    Observable<Result<String>> yinsiCheck(@Header("Authorization") String token, @Query("status") String status
            , @Query("type") String type);

    @GET("/qw/app/member/collect/order")
    Observable<Result<String>> collect(@Header("Authorization") String token, @Query("id") String id
            , @Query("status") String status);

    /**
     * 拉黑
     */
    @POST("/qw/app/member/operateBL")
    Observable<Result<String>> operateBL(@Header("Authorization") String token, @Query("id") long id
            , @Query("status") int status);

    /**
     * 举报
     */
    @POST("/qw/app/member/report")
    Observable<Result<String>> report(@Header("Authorization") String token, @Query("content") String content
            , @Query("targetMId") String targetMId, @Query("img") String img, @Query("reason") String reason);

    /**
     * 文本内容检测
     */
    @POST("/qw/common/content/check")
    Observable<Result<String>> textCheck(@Header("Authorization") String token, @Query("content") String content);
    /**
     * 文本内容检测
     */
    @POST("/qw/app/dispatch/publish")
    Observable<Result<PayOrder>> paidanPush(@Header("Authorization") String token
            , @Query("address") String address
            , @Query("beginTime") String beginTime
            , @Query("categoryId") String categoryId
            , @Query("cityCode") String cityCode
            , @Query("cityName") String cityName
            , @Query("content") String content
            , @Query("orderTime") String orderTime
            , @Query("payType") String payType
            , @Query("price") String price
            , @Query("unit") String unit
            , @Query("imgs") String imgs);

    /**
     * 支付开关
     */
    @GET("/qw/app/order/pay/power")
    Observable<Result<List<PayPower>>> payPower(@Header("Authorization") String token);

    /**
     * 注销账号
     */
    @POST("/qw/app/member/logOut")
    Observable<Result<String>> cancellation(@Header("Authorization") String token, @Query("id") int id);

    /**
     * 动态详情
     */
    @POST("/qw/app/dynamic/detail")
    Observable<Result<DynamicTwo>> dynamicDetail(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 更新app版本
     */
    @GET("/qw/app/version")
    Observable<Result<AppVersion>> getVersion(@Query("type") String type);

    /**
     * 删除动态
     */
    @POST("/qw/app/dynamic/del")
    Observable<Result<String>> deleteDynamic(@Header("Authorization") String token, @Query("id") String id);

    /**
     * 主动获取系统消息
     */
    @GET("/qw/app/member/pull/session")
    Observable<Result<String>> getImMessage(@Header("Authorization") String token);

    /**
     * 获取未读消息数
     */
    @POST("/qw/app/im/unread")
    Observable<Result<String>> getImUnread(@Header("Authorization") String token);

    /**
     * 下架订单
     */
    @POST("/qw/app/order/hidePo")
    Observable<Result<String>> hideOrder(@Header("Authorization") String token, @Query("id") String id);


    /**
     * 我的收藏
     */
    @GET("/qw/app/member/me/collect/list")
    Observable<Result<Order>> myCollectList(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                            @Query("pageSize") int pageSize);

    /**
     * 我的点赞
     */
    @GET("/qw/app/member/me/zan/list")
    Observable<Result<Dynamic>> myZanDynamic(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                             @Query("pageSize") int pageSize);

    /**
     * 订单评论
     */
    @GET("/qw/app/order/memberOrderCommentList")
    Observable<Result<OrderComment>> orderComment(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                                  @Query("pageSize") int pageSize, @Query("id") String id);

    /**
     * 我的关注
     */
    @GET("/qw/app/member/me/follow")
    Observable<Result<MyFollow>> myFollow(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                          @Query("pageSize") int pageSize);

    /**
     * 我的粉丝
     */
    @GET("/qw/app/member/me/follower")
    Observable<Result<MyFollow>> myFans(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                        @Query("pageSize") int pageSize);

    /**
     * 首页推荐用户
     */
    @GET("/qw/app/recommendMemberList")
    Observable<Result<Order>> recommendMemberList(@Query("pageNo") int pageNo, @Query("pageSize") int pageSize);

    /**
     * 首页推荐用户+筛选
     */
    @GET("/qw/app/recommendMemberList")
    Observable<Result<RecommendMember>> recommendMemberListMore(@Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("auto") String auto, @Query("gender") String gender);

    /**
     * 订单评价列表
     */
    @GET("/qw/app/member/me/comment/list")
    Observable<Result<Order>> commendList(@Header("Authorization") String token, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("type") int type);


    /**
     * 我关注的圈子
     */
    @POST("/qw/app/circle/follower")
    Observable<Result<Square>> myFollowSquare(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                              @Query("pageSize") int pageSize);

    /**
     * 圈子列表
     */
    @POST("/qw/app/circle/list")
    Observable<Result<Square>> squareList(@Header("Authorization") String token, @Query("id") String id, @Query("pageNo") int pageNo,
                                          @Query("pageSize") int pageSize);

    /**
     * 我关注的圈子
     */
    @POST("/qw/app/circle/type")
    Observable<Result<List<SquareType>>> squareType();


    /**
     * 圈子内容列表
     */
    @POST("/qw/app/circle/contentList")
    Observable<Result<SquareDetail>> squareDetailList(@Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("type") String type, @Query("id") String id, @Header("Authorization") String token);


    /**
     * 关注/取消圈子内容
     */
    @POST("/qw/app/circle/follow/content")
    Observable<Result<String>> followCancelSuqareDetail(@Header("Authorization") String token, @Query("id") String id, @Query("status") int status);


    /**
     * 关注/取消圈子列表
     */
    @POST("/qw/app/circle/follow/name")
    Observable<Result<String>> followCancelSquareList(@Header("Authorization") String token, @Query("id") String id, @Query("status") int status);


    /**
     * 动态详情
     */
    @POST("/qw/app/circle/detail")
    Observable<Result<SquareDetailTwo>> squareDetail(@Header("Authorization") String token, @Query("id") String id);


    /**
     * 圈子内容评价列表
     */
    @POST("/qw/app/circle/circleCommentList")
    Observable<Result<SquareComment>> getSquareDetailCommentList(@Header("Authorization") String token, @Query("id") String id, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize);


    @POST("/qw/app/circle/comment/add")
    Observable<Result<String>> addSquareComment(@Header("Authorization") String token, @Query("content") String content, @Query("id") String id);


    /**
     * 发布圈子
     */
    @POST("/qw/app/circle/publish/add")
    Observable<Result<String>> sendSquare(@Header("Authorization") String token, @Query("content") String content, @Query("id") String id, @Query("imgs") String imgs);


    /**
     * 设置人脸识别
     */
    @POST("/qw/app/member/face")
    Observable<Result<String>> setFace(@Header("Authorization") String token, @Query("url") String url);

    /**
     * 推广信息
     */
    @GET("/qw/app/member/me/spread/data")
    Observable<Result<Spread>> spread(@Header("Authorization") String token);


    /**
     * 推广详情
     */
    @GET("/qw/app/member/me/spread/list")
    Observable<Result<TuiguangDetail>> spreadDetail(@Header("Authorization") String token, @Query("pageNo") int pageNo,
                                                          @Query("pageSize") int pageSize);


    /**
     * 派单列表
     */
    @POST("/qw/app/dispatch/list")
    Observable<Result<PaiDanList>> paiDanList(@Query("pageNo") int pageNo,
                                              @Query("pageSize") int pageSize,
                                              @Query("categoryId") String categoryId,
                                              @Query("cityCode") String cityCode,
                                              @Query("sortPrice") String sortPrice);


    /**
     * 申请派单
     */
    @POST("/qw/app/dispatch/apply")
    Observable<Result<String>> applyPaidan(@Header("Authorization") String token, @Query("id") String id
//            ,@Query("date") String date, @Query("time") String time
    );
    /**
     * 派单 订单状态详情信息
     */
    @POST("/qw/app/dispatch/consumeOrderInfo")
    Observable<Result<PaiDanDetail2>> paidanOrderDetail(@Header("Authorization") String token, @Query("id") String id);
    /**
     * 派单 订单状态详情信息
     */
    @POST("/qw/app/member/bg")
    Observable<Result<PaidanOrderDetail>> qwAppMemberBg(@Header("Authorization") String token, @Query("url") String url);

    /**
     * 会员中心页面数据
     */
    @GET("/qw/app/vip/data")
    Observable<Result<VipPageData>> vipPageData(@Header("Authorization") String token);

    /**
     * vip开通
     */
    @POST("/qw/app/vip/buyIt")
    Observable<Result<VipBuy>> vipBuyIt(@Header("Authorization") String token, @Query("payMethod") String payMethod, @Query("vipId") String vipId);

    /**
     * 会员身份证认证V2
     */
    @POST("/qw/app/member/v2.5/identityChecked")
    Observable<Result<String>> identityCheckedTwo(@Header("Authorization") String token,  @Query("idCode") String idCode,  @Query("name") String name, @Query("urls") String urls, @Query("lifeUrl") String lifeUrl);

}
